package cn.pkubangbang.demo.democontact.mapper;

import cn.pkubangbang.demo.democontact.entity.Contact;
import cn.pkubangbang.demo.democontact.entity.Person;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

/**
 * @Author: zhangzhenbang@k2data.com.cn
 * @Date: 2018-08-23 14:05
 */
@Repository
@Mapper
public interface PersonMapper {

    /**
     * 通过id查找用户
     * @param id 用户的Id
     * @return 一个用户
     */
    Person getPersonById(Integer id);

    /**
     * 通过名字查找用户
     * @param name 名字
     * @return 名字包含name的人，是一个List
     */
    List<Person> findPersonByName(String name);

    /**
     * 查找朋友
     * @param p 一个人
     * @return 他的所有朋友，是一个List
     */
    List<Person> queryFriends(Person p);

    /**
     * 查找“可能认识的人”。可能认识的人的定义是：是朋友的朋友，但不是自己的朋友，并且排除自己。
     * @param p 一个人
     * @return 他可能认识的人，是一个List
     */
    List<Person> peopleMayKnow(Person p);

    /**
     * 取Contact表中的一条数据。注意：此时的Contact是不完整的，Person属性中只有id（已足够用）
     * @param p1 第一个人
     * @param p2 第二个人
     * @return Contact 如果是朋友；null 如果不是朋友
     */
    Contact getContactByTwoPeople(Person p1, Person p2);

}
